The present invention relates generally to the field of virtualization, and more particularly to guided virtual machine migration.
The use of virtualization is becoming widespread. Virtualization describes a software abstraction that separates a computer resource and its use from an underlying physical device. Generally, a virtual machine (VM) provides a software execution environment and may have a virtual processor, virtual system memory, virtual storage, and various virtual devices. Virtual machines have the ability to accomplish tasks independent of particular hardware implementations or configurations. System virtualization is implemented through some managing functionality, typically hypervisor technology. Hypervisors, also called virtual machine managers (VMMs), use a thin layer of code in software or firmware to achieve fine-grained, dynamic resource sharing. Because hypervisors provide the greatest level of flexibility in how virtual resources are defined and managed, they are generally the primary technology for system virtualization.
Virtual machines may be migrated between a source host computing platform (“the source host”) and a target host computing platform (“the target host”) connected over a network, which may be a local area network or a wide area network that may include the Internet. Migration permits a clean separation between hardware and software, thereby improving facilities fault management, load balancing, and low-level system maintenance. Live migration permits an administrator to move a running virtual machine between different physical machines without disconnecting a running client or application program. For a successful live migration, memory, storage, and network connectivity of the virtual machine need to be migrated from the source host to the destination host.
In computing, hardware acceleration is the use of computer hardware to perform some functions faster than is possible in software running on a more general-purpose central processing unit (CPU). Examples of hardware acceleration include blitting acceleration functionality in graphics processing units (GPUs) and regular expression hardware acceleration for spam control in the server industry. The hardware that performs the acceleration, when in a separate unit from the CPU, is referred to as a hardware accelerator. Generally, processors are sequential, and instructions are executed one by one. Various techniques are used to improve performance; hardware acceleration is one of them. The main difference between hardware and software is concurrency, allowing hardware to be much faster than software. Hardware accelerators are designed for computationally intensive software code. Depending upon granularity, hardware acceleration can vary from a small functional unit to a large functional block.